本文同步刊載於 我的個人部落格
在規劃專案之資料表前,想先插播介紹關於 Firebase 的資料庫運作原理,此部分並不影響專案規劃之順序,因為這是在規畫專案前也必須知道的重要事項之一。
過往我開發網站的經驗,都是使用 PostgreSQL 和 MySQL 居多,也就是大家常聽見的關聯式資料表 RDBMS(Relational Database Menagement System),通常會根據不同作用功能,將資料以一個或多個資料表(table)的方式存放,透過結構化的定義表格、列、欄、索引、表格之間的關係,資料彼此之間會有明確關聯性是其最大特點。
然而對應地,在 Firebase 中,則是主打即時更新同步功能,採用 NoSQL(Not Only SQL) 這種非關聯式資料庫概念,將資料儲存在類似 JSON 的文件中。
較被大眾所知的 Amazon 的雲端服務 AWS S3,也是使用 NoSQL 的資料庫服務,處理大量、非結構化或多變的資料架構。這麼說還是很模糊,那就讓我們繼續探討...
NoSQL 一詞大約從 1998 年代出現,英文全名為 Not Only SQL,不只是 SQL,也稱為「非關聯式」、「NoSQL DB」或「非 SQL」。它以多種資料模型來存取與管理資料,並透過放寬有別於傳統關聯式資料庫的一些資料一致性限制,針對需要大量資料、低延遲和彈性資料模型的應用程式進行優化。
存取資料的方式,則必須使用資料庫系統所提供的 API 才能夠做新增、修改、刪除資料的動作,也就是需要透過程式語言呼叫特定的函式,或是使用資料庫系統所提供的指令,遠端連線執行後才能存取資料。
主要優點是它們能夠處理大量的結構化或半結構化數據,更容易擴展、靈活性超高,並且能夠提供高效能。但對應來說,數據的一致性和完整性,與缺乏標準化則是 NoSQL 資料庫的主要問題,因為它沒有通用的標準語言,不同的 NoSQL 資料庫之間存在很大的差異,不像關聯式資料庫通用 SQL 語法。
非關聯式資料庫在各文獻中強調的都是即時與彈性,雖然是相對陌生之資訊,但藉由此 side project 的發想,有機會接觸並藉由各網路文獻與資源統整出上述內容,也算是一種學習成長,對後續要規劃專案資料表時,能有初步的概念。
如同前述的缺點,在本專案使用的 Firebase 服務中,使用數據服務(NoSQL)時,就需要匯入(或說引用)一個套件和使用一組函式來操作資料庫,個人覺得學習曲線較 SQL 程式語言稍微再高一點,但因為官方文件相當齊全、函式名稱也很易懂,且就像前面所提到的是以 key-value 方式儲存,所以不需太擔心不知道如何使用,後續實作時會再一一介紹!
NoSQL
什麽是 NoSQL?
What is AWS S3? Powerful Features with Minimal Complexity
What is NoSQL?
本文同步刊載於 我的個人部落格